終於到了第20天了,已經完成了3/2的進度了。
我們今天要來講 枚舉(enum) 這個東西。
枚舉可以用在許多地方。
使用 enum 來最關鍵字跟創建。
enum SomeEnumeration{
//定義
}
官方的例子是用東西南北。
enum CompassPoint {
case north
case south
case east
case west
}
而也可以多個值出現在同一行上面,要用逗號隔開
enum Planet {
case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune
}
每個枚舉定一個全新的 Type 。就跟其他類型一樣他們的開頭都會是大寫(String, Int, Planet, CompassPoint)。
var directionToHead = CompassPoint.west
directionToHead = .east
因為 directionToHead 已經是 CompassPoint 的類型了,所以可以用更短的方式去賦予同類型的 CompassPoint.east 。
可以使用 Switch 語法來跟枚舉做搭配。
directionToHead = .south
switch directionToHead {
case .north:
print("Lots of planets have a north")
case .south:
print("Watch out for penguins")
case .east:
print("Where the sun rises")
case .west:
print("Where the skies are blue")
}
// print "Watch out for penguins"
這上面的程式碼可以理解成 directionToHead 有很多狀況,如果他等於 .north 的時候就
print "Lots of planets have a north" 依此類推。
而當你不需要匹配任何東西的時候,你可以給一個 default 的狀態來處理沒有符合的狀況。
let somePlanet = Planet.earth
switch somePlanet {
case .earth:
print("Mostly harmless")
default:
print("Not a safe place for humans")
}
有時候你會需要拿到枚舉裡面所有的集合,那可以給枚舉一個遵循 CaseIterable 的協議。
那他會生成一個 allCases 的屬性,用於表達枚舉裡面的所有成員。
enum Beverage: CaseIterable {
case coffee, tea, juice
}
let numberOfChoices = Beverage.allCases.count
print("\(numberOfChoices) beverage available")
// 印出 "3 beverages available"
今天就到這裡了,讓我們明天繼續。